package com.quectel.constant.core.scheduling;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 在这里编写说明
 *
 * @author: ryan
 * @email: ryan.ran@quectel.com
 * @date: 2023-07-13 19:03:00
 */
public class SchedulingAttendanceDailyConstants {

//    public static final String[] CHECK_SITUATIONS = new String[]{"班", "休", "假"};

    /**
     * 考勤状况类型 1班 2休 3假
     */
    @AllArgsConstructor
    public enum SituationTypeEnum {
        /**
         * 班
         */
        WORK((byte) 1, "班"),
        /**
         * 休
         */
        REST((byte) 2, "休"),
        /**
         * 假
         */
        VACATION((byte) 3, "假"),
        ;
        @Getter
        private final Byte type;
        @Getter
        private final String desc;

        public static SituationTypeEnum getByType(Byte type) {
            for (SituationTypeEnum value : values()) {
                if (value.getType().equals(type)) {
                    return value;
                }
            }
            return null;
        }
    }

    /**
     * 考勤计点位置枚举
     */
    @AllArgsConstructor
    public enum TimeSiteEnum {

        /**
         * 上班提前
         */
        PRE_WORK((byte) 1),

        /**
         * 上班容忍
         */
        AFTER_WORK((byte) 2),


        /**
         * 迟到
         */
        LATE((byte) 3),


        /**
         * 缺勤
         */
        LAKE((byte) 4),

        /**
         * 早退
         */
        EARLY((byte) 5),

        /**
         * 下班容忍
         */
        PRE_CLOSING((byte) 6),

        /**
         * 下班后
         */
        AFTER_CLOSING((byte) 7);


        @Getter
        private final Byte index;
    }

    /**
     * 考勤状况类型 1班 2休 3假期 4出差 5外出(移动端显示用)
     */
    @AllArgsConstructor
    public enum MobileSituationTypeEnum {
        /**
         * 班
         */
        WORK((byte) 1),
        /**
         * 休
         */
        REST((byte) 2),
        /**
         * 假期
         */
        VACATION((byte) 3),
        /**
         * 出差
         */
        TRIP((byte) 4),
        /**
         * 外出
         */
        OUT((byte) 5),
        ;
        @Getter
        private final Byte type;
    }

    /**
     * 日常考勤打卡状态
     */
    @AllArgsConstructor
    public enum CheckStatusEnum {
        /**
         * 正常
         */
        NORMAL((byte) 1),
        /**
         * 异常
         */
        ABNORMAL((byte) 0),
        ;
        @Getter
        private final Byte status;
    }

    /**
     * 是否补卡
     */
    @AllArgsConstructor
    public enum IsRepairEnum {
        /**
         * 补卡
         */
        IS_REPAIR((byte) 1, "补卡"),
        /**
         * 非补卡
         */
        NOT_REPAIR((byte) 0, "正常打卡"),
        ;
        @Getter
        private final Byte type;
        @Getter
        private final String desc;
    }

    /**
     * 是否外勤打卡
     */
    @AllArgsConstructor
    public enum IsFieldEnum {
        /**
         * 是外勤
         */
        IS_FIELD((byte) 1, "外勤"),
        /**
         * 非外勤
         */
        NOT_FIELD((byte) 0, "非外勤"),
        ;
        @Getter
        private final Byte type;
        @Getter
        private final String desc;
    }

    /**
     * 考勤时间段打卡状态
     */
    @AllArgsConstructor
    public enum TimeCheckStatusEnum {
        /**
         * 缺卡
         */
        LACK((byte) 0),

        /**
         * 正常
         */
        NORMAL((byte) 1),
        /**
         * 迟到
         */
        LATE((byte) 2),
        /**
         * 早退
         */
        EARLY((byte) 3),
        ;
        @Getter
        private final Byte status;
    }
}
